package com.lhnstart.learn.bases.smallchange;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * 零钱通系统
 *
 * @author lhn
 * @date 2023/06/13 16:23
 * @since 1.0.0
 **/
public class SmallchangeSys {

    // 化繁为简
    // 1. 先完成显示菜单, 并可以选择菜单, 给出对应提示
    // 2. 完成零钱通明细
    // 3. 收益入账

    public static void main(String[] args) {
        boolean loop = true;
        Scanner scanner = new Scanner(System.in);
        String key;
        // 2.完成零钱通明细
        // 2.1保存到数组中, 2.2 可以使用对象 2.3 可以使用字符串拼接
        String details = "==============零钱通明细==============";
        // 3. 收益入账 完成功能驱动增加新的变化和代码
        // 定义新的变量
        double money = 0;
        double balance = 0;
        Date date = null; //
        String note = "";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        do {
            System.out.println("\n==============零钱通菜单==============");
            System.out.println("\t\t\t1 零钱通明细");
            System.out.println("\t\t\t2 收益入账");
            System.out.println("\t\t\t3 消费");
            System.out.println("\t\t\t4 退    出");
            System.out.print("请选择(1-4): ");
            key = scanner.next();
            date = new Date();
            String formatDate = sdf.format(date);
            // 使用 switch 分支控制
            switch (key) {
                case "1":
                    System.out.println(details);
                    break;
                case "2":
                    System.out.print("收益入账金额: ");
                    // 收益入账
                    money = scanner.nextDouble();
                    // todo money 的值范围应该校验 -> 一会完善
                    if (money > 0) {
                        balance += money;
                        // 拼接收益到 details
                        details += "\n收益入账\t+" + money + "\t" + formatDate + "\t" + balance;
                    } else {
                        System.out.println("输入金额有误, 请确认后重新输入!");
                    }
                    break;
                case "3":
                    System.out.print("消费支出金额: ");
                    // 收益入账
                    money = scanner.nextDouble();
                    // todo money 的值范围应该校验 -> 一会完善
                    if (money < balance && money > 0) {
                        System.out.print("消费说明:");
                        note = scanner.next();
                        balance -= money;
                        // 拼接收益到 details
                        details += "\n" + note + "\t-" + money + "\t" + formatDate + "\t" + balance;
                    } else {
                        System.out.println("输入金额有误, 请确认后重新输入!");
                    }
                    break;
                case "4":
                    String choice = "";
                    do {
                        System.out.println("你确定要退出吗? y/n");
                        choice = scanner.next();
                    } while (!choice.equals("y") && !choice.equals("n"));

                    if (choice.equals("y")) {
                        loop = false;
                    }
                    break;
                default:
                    System.out.println("菜单选择有误, 请重新选择!");
            }
        } while (loop);
        System.out.println("----------退出了零钱通项目----------");

    }

}